#ifndef __M_ITEM_VIEW_H__
#define __M_ITEM_VIEW_H__

#include "gui/gui.h"

typedef View ItemView;

#define ItemViewSetLayoutGravity(itemView, gravity) ViewSetLayoutGravity(itemView, gravity)
#define ItemViewGetLaoyoutGravity(itemView) ViewGetLaoyoutGravity(itemView)

#define ItemViewSetLayoutMargin(itemView, left, right, top, bottom) ViewSetLayoutMargin(itemView, left, right, top, bottom)
#define ItemViewGetLayoutMargin(itemView, left, right, top, bottom) ViewGetLayoutMargin(itemView, left, right, top, bottom)

#define ItemViewSetLayoutSize(itemView, layout_w, layout_h) ViewSetLayoutSize(itemView, layout_w, layout_h)
#define ItemViewGetLayoutSize(itemView, layout_w, layout_h) ViewGetLayoutSize(itemView, layout_w, layout_h)

#define ItemViewSetLayoutAvailableSize(itemView, available_w, available_h) ViewSetLayoutAvailableSize(itemView, available_w, available_h)
#define ItemViewGetLayoutAvailableSize(itemView, available_w, available_h) ViewGetLayoutAvailableSize(itemView, available_w, available_h)

#define ItemViewSetLayoutPosition(itemView, layout_x, layout_y) ViewSetLayoutPosition(itemView, layout_x, layout_y)
#define ItemViewGetLayoutPosition(itemView, layout_x, layout_y) ViewGetLayoutPosition(itemView, layout_x, layout_y)

#define ItemViewSetVisibility(itemView, visibility) ViewSetVisibility(itemView, visibility)
#define ItemViewGetVisibility(itemView) ViewGetVisibility(itemView)

#define ItemViewSetOrientation(itemView, orientation) ViewSetOrientation(itemView, orientation)
#define ItemViewGetOrientation(itemView) ViewGetOrientation(itemView)

#define ItemViewSetGravity(itemView, gravity) ViewSetGravity(itemView, gravity)
#define ItemViewGetGravity(itemView) ViewGetGravity(itemView)

#define ItemViewSetPadding(itemView, left, right, top, bottom) ViewSetPadding(itemView, left, right, top, bottom)
#define ItemViewGetPadding(itemView, left, right, top, bottom) ViewGetPadding(itemView, left, right, top, bottom)

#define ItemViewSetAutoFree(itemView, auto_free) ViewSetAutoFree(itemView, auto_free)
#define ItemViewIsAutoFree(itemView) ViewIsAutoFree(itemView)

#define ItemViewSetFocus(view, focused) ViewSetFocus(view, focused)
#define ItemViewIsFocused(view) ViewIsFocused(view)

#define ItemViewSetBgColor(itemView, color) ViewSetBgColor(itemView, color)
#define ItemViewGetBgColor(itemView) ViewGetBgColor(itemView)

#define ItemViewSetUserData(itemView, data) ViewSetUserData(itemView, data)
#define ItemViewGetUserData(itemView) ViewGetUserData(itemView)

#define ItemViewGetMeasuredSize(itemView, measured_w, measured_h) ViewGetMeasuredSize(itemView, measured_w, measured_h)
#define ItemViewGetWrapSize(itemView, wrap_w, wrap_h) ViewGetWrapSize(itemView, wrap_w, wrap_h)
#define ItemViewGetOccupySize(itemView, occupy_w, occupy_h) ViewGetOccupySize(itemView, occupy_w, occupy_h)
#define ItemViewGetMeasuredContentSize(itemView, measured_content_w, measured_content_h) ViewGetMeasuredContentSize(itemView, measured_content_w, measured_content_h)
#define ItemViewGetWrapContentSize(itemView, wrap_content_w, wrap_content_h) ViewGetWrapContentSize(itemView, wrap_content_w, wrap_content_h)

int ItemViewSetIconTexture(ItemView *itemView, const GUI_Texture *texture);
const GUI_Texture *ItemViewGetIconTexture(ItemView *itemView);
int ItemViewSetIconTintColor(ItemView *itemView, uint32_t color);
uint32_t ItemViewGetIconTintColor(ItemView *itemView);

int ItemViewSetNameText(ItemView *itemView, const char *text);
const char *ItemViewGetNameText(ItemView *itemView);
int ItemViewSetNameTextColor(ItemView *itemView, uint32_t color);
uint32_t ItemViewGetNameTextColor(ItemView *itemView);
int ItemViewSetNameTextScollEnabled(ItemView *itemView, int enabled);
int ItemViewIsNameTextScollEnabled(ItemView *itemView);

int ItemViewSetInfoText(ItemView *itemView, const char *text);
const char *ItemViewGetInfoText(ItemView *itemView);
int ItemViewSetInfoTextColor(ItemView *itemView, uint32_t color);
uint32_t ItemViewGetInfoTextColor(ItemView *itemView);
int ItemViewSetInfoTextScollEnabled(ItemView *itemView, int enabled);
int ItemViewIsInfoTextScollEnabled(ItemView *itemView);

ItemView *NewItemView();
int ItemViewInit(ItemView *itemView);
int ItemViewDeinit(ItemView *itemView);
int ItemViewDestroy(ItemView *itemView);
int ItemViewMeasure(ItemView *itemView);
int ItemViewDraw(ItemView *itemView);

#endif